/**
 * Cookie 工具类
 * 提供跨平台的 cookie 操作方法
 */

// 设置 cookie
export const setCookie = (name, value, days = 30) => {
  // 仅在 H5 环境下使用原生 cookie
  // #ifdef H5
  const expires = new Date();
  expires.setTime(expires.getTime() + days * 24 * 60 * 60 * 1000);
  document.cookie = `${name}=${value};expires=${expires.toUTCString()};path=/`;
  // #endif
  
  // 在所有平台上，同时使用 localStorage 存储
  try {
    uni.setStorageSync(`cookie_${name}`, value);
  } catch (e) {
    console.error('设置存储失败', e);
  }
};

// 获取 cookie
export const getCookie = (name) => {
  // 优先从 H5 cookie 中获取
  // #ifdef H5
  const cookies = document.cookie.split(';');
  for (let i = 0; i < cookies.length; i++) {
    const cookie = cookies[i].trim();
    if (cookie.startsWith(name + '=')) {
      return cookie.substring(name.length + 1);
    }
  }
  // #endif
  
  // 从 localStorage 中获取
  try {
    return uni.getStorageSync(`cookie_${name}`);
  } catch (e) {
    console.error('获取存储失败', e);
    return '';
  }
};

// 删除 cookie
export const removeCookie = (name) => {
  // 删除 H5 cookie
  // #ifdef H5
  document.cookie = `${name}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/`;
  // #endif
  
  // 删除 localStorage
  try {
    uni.removeStorageSync(`cookie_${name}`);
  } catch (e) {
    console.error('删除存储失败', e);
  }
};

// 检查是否已登录（通过检查 token）
export const checkLogin = () => {
  const token = getCookie('token');
  return !!token;
};

// 获取用户 token
export const getToken = () => {
  return getCookie('token');
};

// 获取用户 openid
export const getOpenId = () => {
  return getCookie('openid');
};

// 清除所有登录信息
export const clearLoginInfo = () => {
  removeCookie('token');
  removeCookie('openid');
};
